// 子模块moduleA路径：store/modules/moduleA.js 
export default {
    namespaced: true,
	state: {
        // list: [{商品id,商品图片,商品价格,商品名称,商品数量=1,选中状态为true}]
        list: uni.getStorageSync('hmyg-cart')||[]
	},
    getters: {
        // 商品加入购物车的数量
        totalNums(state) {
           // 数组方法 reduce/forEach
        //    let nums = 0;
        //    state.list.forEach((v) => (nums += v.num));
        //    return nums;

          return state.list.reduce((s, v) => s + v.num, 0);
        },
        // 勾选商品的数组
        checkedCarts(state) {
            return state.list.filter((v)=>v.checkout)
        },
        //  勾选商品的总数量
        togglGoodsNums(state,getters) {
            return getters.checkedCarts.reduce((s,v)=>s+v.num,0)
        },
         // 勾选商品的总价格
        togglGoodsprice(state,getters) {
            return getters.checkedCarts.reduce((s,v)=>s+v.num*v.goods_price,0)
        },
        // 全选
        allCheck(state, getters) {
            return(state.list.length&&state.list.length===getters.checkedCarts.length)
        }
	},
    mutations: {
        // 添加商品
        addCart(state, payload) {
            // 判断商品是否存在，找到返回数组下标，找不到则返回-1
            const index = state.list.findIndex(v => v.goods_id === payload.goods_id)
            if (index===-1) {
                // 没有购买过
                state.list.push({...payload,num:1,checkout:true})
            } else {
                // 已购买过
                state.list[index].num++
            }
            // console.log(state.list);
            uni.setStorageSync('hmyg-cart',state.list)
        },
        // 选中按钮的切换功能
        toggleGoodsCheck(state,payload) {
            state.list[payload].checkout=!state.list[payload].checkout
            // 修改了数据需重新存入本次存储
            uni.setStorageSync('hmyg-cart',state.list)
        },
        // 全选控制商品选中的状态
        toggleAllCheck(state,payload) {
            const allCheck = !this.getters['cart/allcheck']
            state.list.forEach((v) => (v.checked = allCheck))
             // 修改了数据需重新存入本次存储
             uni.setStorageSync('hmyg-cart',state.list)
        },
        // 商品数量的改变
        changeNum(state, payload) {
            state.list[payload.index].num += payload.num
              // 修改了数据需重新存入本次存储
              uni.setStorageSync('hmyg-cart',state.list)
        },
        // 确认删除商品
        deleteGoods(state,payload) {
            state.list.splice(payload, 1)
             // 修改了数据需重新存入本次存储
             uni.setStorageSync('hmyg-cart',state.list)
        }
     
        
	},
	actions: { 
		
	}
}
